
// Generated from Jass.g4 by ANTLR 4.13.2

#pragma once


#include "antlr4-runtime.h"
#include "JassParser.h"


namespace antlrcppjassparser {

/**
 * This interface defines an abstract listener for a parse tree produced by JassParser.
 */
class  JassListener : public antlr4::tree::ParseTreeListener {
public:

  virtual void enterProgram(JassParser::ProgramContext *ctx) = 0;
  virtual void exitProgram(JassParser::ProgramContext *ctx) = 0;

  virtual void enterTypeDeclaration(JassParser::TypeDeclarationContext *ctx) = 0;
  virtual void exitTypeDeclaration(JassParser::TypeDeclarationContext *ctx) = 0;

  virtual void enterBasicType(JassParser::BasicTypeContext *ctx) = 0;
  virtual void exitBasicType(JassParser::BasicTypeContext *ctx) = 0;

  virtual void enterArrayType(JassParser::ArrayTypeContext *ctx) = 0;
  virtual void exitArrayType(JassParser::ArrayTypeContext *ctx) = 0;

  virtual void enterNothingType(JassParser::NothingTypeContext *ctx) = 0;
  virtual void exitNothingType(JassParser::NothingTypeContext *ctx) = 0;

  virtual void enterBasicGlobal(JassParser::BasicGlobalContext *ctx) = 0;
  virtual void exitBasicGlobal(JassParser::BasicGlobalContext *ctx) = 0;

  virtual void enterDefinitionGlobal(JassParser::DefinitionGlobalContext *ctx) = 0;
  virtual void exitDefinitionGlobal(JassParser::DefinitionGlobalContext *ctx) = 0;

  virtual void enterBasicLocal(JassParser::BasicLocalContext *ctx) = 0;
  virtual void exitBasicLocal(JassParser::BasicLocalContext *ctx) = 0;

  virtual void enterDefinitionLocal(JassParser::DefinitionLocalContext *ctx) = 0;
  virtual void exitDefinitionLocal(JassParser::DefinitionLocalContext *ctx) = 0;

  virtual void enterAssignTail(JassParser::AssignTailContext *ctx) = 0;
  virtual void exitAssignTail(JassParser::AssignTailContext *ctx) = 0;

  virtual void enterBaseMultiplicationExpression(JassParser::BaseMultiplicationExpressionContext *ctx) = 0;
  virtual void exitBaseMultiplicationExpression(JassParser::BaseMultiplicationExpressionContext *ctx) = 0;

  virtual void enterDivisionExpression(JassParser::DivisionExpressionContext *ctx) = 0;
  virtual void exitDivisionExpression(JassParser::DivisionExpressionContext *ctx) = 0;

  virtual void enterMultiplicationExpression(JassParser::MultiplicationExpressionContext *ctx) = 0;
  virtual void exitMultiplicationExpression(JassParser::MultiplicationExpressionContext *ctx) = 0;

  virtual void enterAdditionExpression(JassParser::AdditionExpressionContext *ctx) = 0;
  virtual void exitAdditionExpression(JassParser::AdditionExpressionContext *ctx) = 0;

  virtual void enterSubtrationExpression(JassParser::SubtrationExpressionContext *ctx) = 0;
  virtual void exitSubtrationExpression(JassParser::SubtrationExpressionContext *ctx) = 0;

  virtual void enterBaseAdditionExpression(JassParser::BaseAdditionExpressionContext *ctx) = 0;
  virtual void exitBaseAdditionExpression(JassParser::BaseAdditionExpressionContext *ctx) = 0;

  virtual void enterBooleanLessExpression(JassParser::BooleanLessExpressionContext *ctx) = 0;
  virtual void exitBooleanLessExpression(JassParser::BooleanLessExpressionContext *ctx) = 0;

  virtual void enterBooleanGreaterExpression(JassParser::BooleanGreaterExpressionContext *ctx) = 0;
  virtual void exitBooleanGreaterExpression(JassParser::BooleanGreaterExpressionContext *ctx) = 0;

  virtual void enterBaseBoolComparisonExpression(JassParser::BaseBoolComparisonExpressionContext *ctx) = 0;
  virtual void exitBaseBoolComparisonExpression(JassParser::BaseBoolComparisonExpressionContext *ctx) = 0;

  virtual void enterBooleanLessOrEqualsExpression(JassParser::BooleanLessOrEqualsExpressionContext *ctx) = 0;
  virtual void exitBooleanLessOrEqualsExpression(JassParser::BooleanLessOrEqualsExpressionContext *ctx) = 0;

  virtual void enterBooleanGreaterOrEqualsExpression(JassParser::BooleanGreaterOrEqualsExpressionContext *ctx) = 0;
  virtual void exitBooleanGreaterOrEqualsExpression(JassParser::BooleanGreaterOrEqualsExpressionContext *ctx) = 0;

  virtual void enterNotEqualsExpression(JassParser::NotEqualsExpressionContext *ctx) = 0;
  virtual void exitNotEqualsExpression(JassParser::NotEqualsExpressionContext *ctx) = 0;

  virtual void enterBaseBoolExpression(JassParser::BaseBoolExpressionContext *ctx) = 0;
  virtual void exitBaseBoolExpression(JassParser::BaseBoolExpressionContext *ctx) = 0;

  virtual void enterEqualsExpression(JassParser::EqualsExpressionContext *ctx) = 0;
  virtual void exitEqualsExpression(JassParser::EqualsExpressionContext *ctx) = 0;

  virtual void enterBaseBoolAndsExpression(JassParser::BaseBoolAndsExpressionContext *ctx) = 0;
  virtual void exitBaseBoolAndsExpression(JassParser::BaseBoolAndsExpressionContext *ctx) = 0;

  virtual void enterBooleanAndExpression(JassParser::BooleanAndExpressionContext *ctx) = 0;
  virtual void exitBooleanAndExpression(JassParser::BooleanAndExpressionContext *ctx) = 0;

  virtual void enterBaseBoolOrsExpression(JassParser::BaseBoolOrsExpressionContext *ctx) = 0;
  virtual void exitBaseBoolOrsExpression(JassParser::BaseBoolOrsExpressionContext *ctx) = 0;

  virtual void enterBooleanOrExpression(JassParser::BooleanOrExpressionContext *ctx) = 0;
  virtual void exitBooleanOrExpression(JassParser::BooleanOrExpressionContext *ctx) = 0;

  virtual void enterReferenceExpression(JassParser::ReferenceExpressionContext *ctx) = 0;
  virtual void exitReferenceExpression(JassParser::ReferenceExpressionContext *ctx) = 0;

  virtual void enterStringLiteralExpression(JassParser::StringLiteralExpressionContext *ctx) = 0;
  virtual void exitStringLiteralExpression(JassParser::StringLiteralExpressionContext *ctx) = 0;

  virtual void enterIntegerLiteralExpression(JassParser::IntegerLiteralExpressionContext *ctx) = 0;
  virtual void exitIntegerLiteralExpression(JassParser::IntegerLiteralExpressionContext *ctx) = 0;

  virtual void enterHexIntegerLiteralExpression(JassParser::HexIntegerLiteralExpressionContext *ctx) = 0;
  virtual void exitHexIntegerLiteralExpression(JassParser::HexIntegerLiteralExpressionContext *ctx) = 0;

  virtual void enterDollarHexIntegerLiteralExpression(JassParser::DollarHexIntegerLiteralExpressionContext *ctx) = 0;
  virtual void exitDollarHexIntegerLiteralExpression(JassParser::DollarHexIntegerLiteralExpressionContext *ctx) = 0;

  virtual void enterRawcodeLiteralExpression(JassParser::RawcodeLiteralExpressionContext *ctx) = 0;
  virtual void exitRawcodeLiteralExpression(JassParser::RawcodeLiteralExpressionContext *ctx) = 0;

  virtual void enterRealLiteralExpression(JassParser::RealLiteralExpressionContext *ctx) = 0;
  virtual void exitRealLiteralExpression(JassParser::RealLiteralExpressionContext *ctx) = 0;

  virtual void enterFunctionReferenceExpression(JassParser::FunctionReferenceExpressionContext *ctx) = 0;
  virtual void exitFunctionReferenceExpression(JassParser::FunctionReferenceExpressionContext *ctx) = 0;

  virtual void enterNullExpression(JassParser::NullExpressionContext *ctx) = 0;
  virtual void exitNullExpression(JassParser::NullExpressionContext *ctx) = 0;

  virtual void enterTrueExpression(JassParser::TrueExpressionContext *ctx) = 0;
  virtual void exitTrueExpression(JassParser::TrueExpressionContext *ctx) = 0;

  virtual void enterFalseExpression(JassParser::FalseExpressionContext *ctx) = 0;
  virtual void exitFalseExpression(JassParser::FalseExpressionContext *ctx) = 0;

  virtual void enterArrayReferenceExpression(JassParser::ArrayReferenceExpressionContext *ctx) = 0;
  virtual void exitArrayReferenceExpression(JassParser::ArrayReferenceExpressionContext *ctx) = 0;

  virtual void enterFunctionCallExpression(JassParser::FunctionCallExpressionContext *ctx) = 0;
  virtual void exitFunctionCallExpression(JassParser::FunctionCallExpressionContext *ctx) = 0;

  virtual void enterParentheticalExpression(JassParser::ParentheticalExpressionContext *ctx) = 0;
  virtual void exitParentheticalExpression(JassParser::ParentheticalExpressionContext *ctx) = 0;

  virtual void enterNotExpression(JassParser::NotExpressionContext *ctx) = 0;
  virtual void exitNotExpression(JassParser::NotExpressionContext *ctx) = 0;

  virtual void enterNegateExpression(JassParser::NegateExpressionContext *ctx) = 0;
  virtual void exitNegateExpression(JassParser::NegateExpressionContext *ctx) = 0;

  virtual void enterExpression(JassParser::ExpressionContext *ctx) = 0;
  virtual void exitExpression(JassParser::ExpressionContext *ctx) = 0;

  virtual void enterFunctionExpression(JassParser::FunctionExpressionContext *ctx) = 0;
  virtual void exitFunctionExpression(JassParser::FunctionExpressionContext *ctx) = 0;

  virtual void enterSingleArgument(JassParser::SingleArgumentContext *ctx) = 0;
  virtual void exitSingleArgument(JassParser::SingleArgumentContext *ctx) = 0;

  virtual void enterListArgument(JassParser::ListArgumentContext *ctx) = 0;
  virtual void exitListArgument(JassParser::ListArgumentContext *ctx) = 0;

  virtual void enterEmptyArgument(JassParser::EmptyArgumentContext *ctx) = 0;
  virtual void exitEmptyArgument(JassParser::EmptyArgumentContext *ctx) = 0;

  virtual void enterCallStatement(JassParser::CallStatementContext *ctx) = 0;
  virtual void exitCallStatement(JassParser::CallStatementContext *ctx) = 0;

  virtual void enterSetStatement(JassParser::SetStatementContext *ctx) = 0;
  virtual void exitSetStatement(JassParser::SetStatementContext *ctx) = 0;

  virtual void enterArrayedAssignmentStatement(JassParser::ArrayedAssignmentStatementContext *ctx) = 0;
  virtual void exitArrayedAssignmentStatement(JassParser::ArrayedAssignmentStatementContext *ctx) = 0;

  virtual void enterReturnStatement(JassParser::ReturnStatementContext *ctx) = 0;
  virtual void exitReturnStatement(JassParser::ReturnStatementContext *ctx) = 0;

  virtual void enterReturnNothingStatement(JassParser::ReturnNothingStatementContext *ctx) = 0;
  virtual void exitReturnNothingStatement(JassParser::ReturnNothingStatementContext *ctx) = 0;

  virtual void enterExitWhenStatement(JassParser::ExitWhenStatementContext *ctx) = 0;
  virtual void exitExitWhenStatement(JassParser::ExitWhenStatementContext *ctx) = 0;

  virtual void enterLocalStatement(JassParser::LocalStatementContext *ctx) = 0;
  virtual void exitLocalStatement(JassParser::LocalStatementContext *ctx) = 0;

  virtual void enterLoopStatement(JassParser::LoopStatementContext *ctx) = 0;
  virtual void exitLoopStatement(JassParser::LoopStatementContext *ctx) = 0;

  virtual void enterIfStatement(JassParser::IfStatementContext *ctx) = 0;
  virtual void exitIfStatement(JassParser::IfStatementContext *ctx) = 0;

  virtual void enterDebugStatement(JassParser::DebugStatementContext *ctx) = 0;
  virtual void exitDebugStatement(JassParser::DebugStatementContext *ctx) = 0;

  virtual void enterSimpleIfStatement(JassParser::SimpleIfStatementContext *ctx) = 0;
  virtual void exitSimpleIfStatement(JassParser::SimpleIfStatementContext *ctx) = 0;

  virtual void enterIfElseStatement(JassParser::IfElseStatementContext *ctx) = 0;
  virtual void exitIfElseStatement(JassParser::IfElseStatementContext *ctx) = 0;

  virtual void enterIfElseIfStatement(JassParser::IfElseIfStatementContext *ctx) = 0;
  virtual void exitIfElseIfStatement(JassParser::IfElseIfStatementContext *ctx) = 0;

  virtual void enterParam(JassParser::ParamContext *ctx) = 0;
  virtual void exitParam(JassParser::ParamContext *ctx) = 0;

  virtual void enterSingleParameter(JassParser::SingleParameterContext *ctx) = 0;
  virtual void exitSingleParameter(JassParser::SingleParameterContext *ctx) = 0;

  virtual void enterListParameter(JassParser::ListParameterContext *ctx) = 0;
  virtual void exitListParameter(JassParser::ListParameterContext *ctx) = 0;

  virtual void enterNothingParameter(JassParser::NothingParameterContext *ctx) = 0;
  virtual void exitNothingParameter(JassParser::NothingParameterContext *ctx) = 0;

  virtual void enterGlobalsBlock(JassParser::GlobalsBlockContext *ctx) = 0;
  virtual void exitGlobalsBlock(JassParser::GlobalsBlockContext *ctx) = 0;

  virtual void enterTypeDeclarationBlock(JassParser::TypeDeclarationBlockContext *ctx) = 0;
  virtual void exitTypeDeclarationBlock(JassParser::TypeDeclarationBlockContext *ctx) = 0;

  virtual void enterNativeBlock(JassParser::NativeBlockContext *ctx) = 0;
  virtual void exitNativeBlock(JassParser::NativeBlockContext *ctx) = 0;

  virtual void enterBlock(JassParser::BlockContext *ctx) = 0;
  virtual void exitBlock(JassParser::BlockContext *ctx) = 0;

  virtual void enterFunctionBlock(JassParser::FunctionBlockContext *ctx) = 0;
  virtual void exitFunctionBlock(JassParser::FunctionBlockContext *ctx) = 0;

  virtual void enterStatements(JassParser::StatementsContext *ctx) = 0;
  virtual void exitStatements(JassParser::StatementsContext *ctx) = 0;

  virtual void enterNewlines(JassParser::NewlinesContext *ctx) = 0;
  virtual void exitNewlines(JassParser::NewlinesContext *ctx) = 0;

  virtual void enterNewlines_opt(JassParser::Newlines_optContext *ctx) = 0;
  virtual void exitNewlines_opt(JassParser::Newlines_optContext *ctx) = 0;

  virtual void enterPnewlines(JassParser::PnewlinesContext *ctx) = 0;
  virtual void exitPnewlines(JassParser::PnewlinesContext *ctx) = 0;


};

}  // namespace antlrcppjassparser
